package model

import (
	"github.com/go-redis/redis/v7"
	"github.com/go-xorm/xorm"
	_ "github.com/go-sql-driver/mysql"
	"log"
)

var x *xorm.Engine
var rdb *redis.Client

func init(){

	var err error
	rdb = redis.NewClient(&redis.Options{
		Addr:     "localhost:6379",
		Password: "", // no password set
		DB:       0,  // use default DB
		//连接池容量及闲置连接数量
		PoolSize:     15, // 连接池最大socket连接数，默认为4倍CPU数， 4 * runtime.NumCPU
		MinIdleConns: 10, //在启动阶段创建指定数量的Idle连接，并长期维持idle状态的连接数不少于指定数量；。
	})

	_, err = rdb.Ping().Result()
	if err != nil {
		return
	}

	var xErr error
	x, xErr = xorm.NewEngine("mysql", "root:new_password@tcp(127.0.0.1:3306)/shopping_cart?charset=utf8")
	if xErr != nil {
		log.Fatal("数据库连接失败:", xErr)
	}
	if err := x.Sync2(new(UserCoupon), new(User), new(Coupon), new(Commodity), new(UserCommodity)); err != nil {
		log.Fatal("数据表同步失败:", err)
	}
}